//============================================================================================
/**
 * @file	phclink_bmp.c
 * @brief	ＰＨＣ−ＤＳ接続画面文字列描画処理
 * @author	Akito Mori
 * @date	09.01.29
 */
//============================================================================================
#include "common.h"
#include "gflib/touchpanel.h"
#include "system/gamedata.h"
#include "system/procsys.h"
#include "system/fontproc.h"
#include "system/window.h"
#include "system/pmfprint.h"
#include "system/snd_tool.h"
#include "system/arc_tool.h"
#include "system/arc_util.h"
#include "gflib/strbuf_family.h"
#include "system/msgdata.h"
#include "system/wordset.h"
#include "system/mystatus.h"
#include "system/wipe.h"
#include "savedata/config.h"
#include "itemtool/item.h"
#include "itemtool/myitem.h"
#include "msgdata/msg.naix"
#include "msgdata/msg_phc_com.h"

#include "../../field/map_mode.h"

#include "application/phclink.h"
#include "phclink_local.h"
#include "phclink_bmp.h"
#include "phc_ds.naix"

///< BMPWIN定義たくさん
#include "phc_a.dat"	///< 上画面預けてる・預けてない画面
#include "phc_b.dat"	///< 下画面選択肢・２択と1択の時
#include "phc_c.dat"	///< 上画面コース説明のとき
#include "phc_d.dat"	///< 下画面コース選択リストのとき
#include "phc_e.dat"	///< 報酬画面その１
#include "phc_f.dat"	///< 報酬画面その２
#include "phc_g.dat"	///< 報酬画面その３
#include "phc_h.dat"	///< 下画面3択の時



//============================================================================================
//	定数定義
//============================================================================================
#define	POCKET_NAME_AREA_SX		( 96 )		///< ポケット名表示エリアXサイズ
#define	POCKET_NAME_AREA_GX		( 50 )		///< ポケット名表示基準X座標
#define	POCKET_NAME_SCROLL_X	( 12 )		///< １カウントスクロールするドット数

#define	MENU_INFO_STRLEN	( BMP_MENU_INFO_SX*2*2 )	///< メニュー説明文字列サイズWinSiz * 2行 * 海外対応

#define	NUMSEL_EX		( BMP_SALE_NUM_SX * 8 )		///< 売却額の右端のX座標

#define	NORMAL_INFO_PX	( 40 )		///< アイテム情報表示X座標

#define	INFO_TYPE_PX	( 0 )		///< 技マシン情報 「タイプ」表示X座標
#define	INFO_TYPE_PY	( 0 )		///< 技マシン情報 「タイプ」表示Y座標
#define	INFO_PP_PX		( 0 )		///< 技マシン情報 「PP」表示X座標
#define	INFO_PP_PY		( 16 )		///< 技マシン情報 「PP」表示Y座標
#define	INFO_KIND_PX	( 72 )		///< 技マシン情報 「ぶんるい」表示X座標
#define	INFO_KIND_PY	( 0 )		///< 技マシン情報 「ぶんるい」表示Y座標
#define	INFO_POW_PX		(168 )		///< 技マシン情報 「いりょく」表示X座標
#define	INFO_POW_PY		(  0 )		///< 技マシン情報 「いりょく」表示Y座標
#define	INFO_HIT_PX		(168 )		///< 技マシン情報 「めいちゅう」表示X座標
#define	INFO_HIT_PY		( 16 )		///< 技マシン情報 「めいちゅう」表示YX座標
#define	INFO_PPNUM_PX	( 48 )		///< 技マシン情報 PP値表示X座標
#define	INFO_PPNUM_PY	( 16 )		///< 技マシン情報 PP値表示Y座標
#define	INFO_POWNUM_PX	(168+64 )	///< 技マシン情報 威力値表示X座標
#define	INFO_POWNUM_PY	(  0 )		///< 技マシン情報 威力値表示Y座標
#define	INFO_HITNUM_PX	(168+64 )	///< 技マシン情報 命中値表示X座標
#define	INFO_HITNUM_PY	( 16 )		///< 技マシン情報 命中値表示Y座標

#define	NX_POS_PX	( 100 )				///< 「ｘ」表示X座標（通常）
#define	WX_POS_PX	( NX_POS_PX+12 )	///< 「ｘ」表示X座標（技マシン）
#define	NUM_POS_EX	( 17*8-2 )			///< 個数表示X座標終端
#define	NUM_BUFLEN	( 10 )				///< ("x???"+EOM_) x 海外

#define WAZANAME_X		( 30 )		///< 技マシン表示の際の文字列を右に移動させるオフセットサイズ

#define	WM_NO_Y_PLUS	( 5 )		///< 技マシンの「No」表示Y座標オフセット

#define	LIST_FILL_SY	( 16 )		///< 技マシンポケットの「とじる」を表示するためのYサイズ

#define	LIST_ICON_SX	( 64 )		///< 「ひでん」「とうろく」アイコンのキャラデータサイズX
#define	LIST_ICON_SY	( 16 )		///< 「ひでん」「とうろく」アイコンのキャラデータサイズY

#define	HIREN_ICON_PX	( 40 )		///< 「ひでん」アイコンのキャラデータの開始X座標
#define	HIREN_ICON_PY	( 0 )		///< 「ひでん」アイコンのキャラデータの開始Y座標
#define	HIREN_ICON_SX	( 24 )		///< 「ひでん」アイコンのキャラデータのXサイズ
#define	HIREN_ICON_SY	( 16 )		///< 「ひでん」アイコンのキャラデータのYサイズ

#define	CNV_ICON_PX			( 0 )	///< 「とうろく」アイコンのキャラデータの開始X座標
#define	CNV_ICON_PY			( 0 )	///< 「とうろく」アイコンのキャラデータの開始Y座標
#define	CNV_ICON_SX			( 40 )	///< 「とうろく」アイコンのキャラデータのXサイズ
#define	CNV_ICON_SY			( 16 )	///< 「とうろく」アイコンのキャラデータのYサイズ
#define	CNV_ICON_SCRPUT_X	( 96 )	///< 「とうろく」アイコンの表示X座標

#define	GOLD_EX			( BMP_GOLD_SX * 8 )		///< 所持金表示の終端X座標

#define BAG_COUNT_NUM	( 3 )		///< 数値表示に使用するBMPの数


//============================================================================================
//	プロトタイプ宣言
//============================================================================================



//============================================================================================
//	定数定義
//============================================================================================


#define PHCLINK_BMPWIN_A_NUM	(NELEMS(PhcAWindow0BmpDataTable))	///< BMPWIN定義AのBMPの数
#define PHCLINK_BMPWIN_B_NUM	(NELEMS(PhcBWindow0BmpDataTable))	///< BMPWIN定義BのBMPの数
#define PHCLINK_BMPWIN_C_NUM	(NELEMS(PhcCWindow0BmpDataTable))	///<  BMPWIN定義CのBMPの数
#define PHCLINK_BMPWIN_D_NUM	(NELEMS(PhcDWindow0BmpDataTable))	///<  BMPWIN定義DのBMPの数
#define PHCLINK_BMPWIN_E_NUM	(NELEMS(PhcEWindow0BmpDataTable))	///<  BMPWIN定義EのBMPの数
#define PHCLINK_BMPWIN_F_NUM	(NELEMS(PhcFWindow0BmpDataTable))	///<  BMPWIN定義FのBMPの数
#define PHCLINK_BMPWIN_G_NUM	(NELEMS(PhcGWindow0BmpDataTable))	///<  BMPWIN定義GのBMPの数
#define PHCLINK_BMPWIN_H_NUM	(NELEMS(PhcHWindow0BmpDataTable))	///<  BMPWIN定義HのBMPの数


static const u8 mainsub_tbl[]={
	BMP_SUB_LCD,
	BMP_MAIN_LCD,
	BMP_SUB_LCD,
	BMP_MAIN_LCD,
	BMP_MAIN_LCD,
	BMP_MAIN_LCD,
	BMP_MAIN_LCD,
	BMP_MAIN_LCD,
};

//--------------------------------------------------------------------------------------------
/**
 * BMPウィンドウ設定
 *
 * @param	wk		画面ワーク
 * @param	no		画面構築指定（phclink_bmp.h: PL_BMP_PAGE_A 〜 PL_BMP_PAGE_G)
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PhcLinkBmp_Init( PHCLINK_WORK * wk, int no )
{
	int i;

	GF_ASSERT( no<PL_BMP_PAGE_MAX );


	switch(no){
	case PL_BMP_PAGE_A:
		for(i=0;i<PHCLINK_BMPWIN_A_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->SubBmpWin[i], PhcAWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[1] = no;
		break;
	case PL_BMP_PAGE_B:
		for(i=0;i<PHCLINK_BMPWIN_B_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->MainBmpWin[i], PhcBWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[0] = no;
		break;
	case PL_BMP_PAGE_C:
		for(i=0;i<PHCLINK_BMPWIN_C_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->SubBmpWin[i], PhcCWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[1] = no;
		break;
	case PL_BMP_PAGE_D:
		for(i=0;i<PHCLINK_BMPWIN_D_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->MainBmpWin[i], PhcDWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[0] = no;
		break;
	case PL_BMP_PAGE_E:
		for(i=0;i<PHCLINK_BMPWIN_E_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->MainBmpWin[i], PhcEWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[0] = no;
		break;
	case PL_BMP_PAGE_F:
		for(i=0;i<PHCLINK_BMPWIN_F_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->MainBmpWin[i], PhcFWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[0] = no;
		break;
	case PL_BMP_PAGE_G:
		for(i=0;i<PHCLINK_BMPWIN_G_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->MainBmpWin[i], PhcGWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[0] = no;
		break;
	case PL_BMP_PAGE_H:
		for(i=0;i<PHCLINK_BMPWIN_H_NUM;i++){
			GF_BGL_BmpWinAddEx( wk->bgl, &wk->MainBmpWin[i], PhcHWindow0BmpDataTable[i] );
		}
		wk->NowBmpWinSet[1] = no;
		break;
	}

	// BMPWINを登録した個数を保存
	wk->NowBmpWinNum[mainsub_tbl[no]]=i;


}

//--------------------------------------------------------------------------------------------
/**
 * BMPウィンドウ破棄
 *
 * @param	win		BMPウィンドウ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PhcLinkBmp_Exit( PHCLINK_WORK *wk, int no )
{
	u16	i;

	if(mainsub_tbl[no]==BMP_MAIN_LCD){
		for( i=0; i<wk->NowBmpWinNum[0]; i++ ){
			GF_BGL_BmpWinDel( &wk->MainBmpWin[i] );
		}
		wk->NowBmpWinSet[0] = -1;

	}else{
		for( i=0; i<wk->NowBmpWinNum[1]; i++ ){
			GF_BGL_BmpWinDel( &wk->SubBmpWin[i] );
		}
		wk->NowBmpWinSet[1] = -1;
	}
}


//==============================================================================
/**
 * @brief   デバッグ用
 *
 * @param   wk		PHC画面用ワーク
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_DumpBmpSet( PHCLINK_WORK *wk )
{
	OS_Printf("main bmp=%d, num=%d\n", wk->NowBmpWinSet[0], wk->NowBmpWinNum[0] );
	OS_Printf("sub  bmp=%d, num=%d\n", wk->NowBmpWinSet[1], wk->NowBmpWinNum[1] );

}


//--------------------------------------------------------------------------------------------
/**
 * メニュー項目取得
 *
 * @param	wk		バッグ画面のワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PhcLinkBmp_MenuStrGet( PHCLINK_WORK * wk )
{
	wk->SelectStr[ PL_STRING_KESU ]			= MSGMAN_AllocString( wk->msg_man, phc_ds_com04 );
	wk->SelectStr[ PL_STRING_GO_TANKEN ]	= MSGMAN_AllocString( wk->msg_man, phc_ds_com01 );
	wk->SelectStr[ PL_STRING_GET_PRESENT ]	= MSGMAN_AllocString( wk->msg_man, phc_ds_com02 );
	wk->SelectStr[ PL_STRING_GET_POKEMON ]	= MSGMAN_AllocString( wk->msg_man, phc_ds_com03 );
	wk->SelectStr[ PL_STRING_OBLIGATE ]	    = MSGMAN_AllocString( wk->msg_man, phc_ds_com06 );
	wk->SelectStr[ PL_STRING_FIRST_TANKEN ]	= MSGMAN_AllocString( wk->msg_man, phc_ds_com05 );

	wk->DecideStr = MSGMAN_AllocString( wk->msg_man, phc_ds_decision01 );
	wk->BackStr   = MSGMAN_AllocString( wk->msg_man, phc_ds_rtn01 );

	wk->TodayResultStr   = MSGMAN_AllocString( wk->msg_man, phc_result_title01 );
	wk->PresentResultStr = MSGMAN_AllocString( wk->msg_man, phc_result_title02 );
	wk->SendResultStr   = MSGMAN_AllocString( wk->msg_man, phc_result_title03 );
	wk->PokemonResultStr = MSGMAN_AllocString( wk->msg_man, phc_result_p );
	wk->ItemResultStr = MSGMAN_AllocString( wk->msg_man, phc_result_i );
	wk->ResultStr[0]   = MSGMAN_AllocString( wk->msg_man, phc_result_title01 );
	wk->ResultStr[1]   = MSGMAN_AllocString( wk->msg_man, phc_result_i );
	wk->ResultStr[2]   = MSGMAN_AllocString( wk->msg_man, phc_ds_rtn01 );
	wk->StillWalkStr   = MSGMAN_AllocString( wk->msg_man, phc_result_04 );
	wk->StillWatStr    = MSGMAN_AllocString( wk->msg_man, phc_result_06 );

	wk->WalkTotalStr   = MSGMAN_AllocString( wk->msg_man, phc_ds_wcnt_t );
	wk->WatTotalStr    = MSGMAN_AllocString( wk->msg_man, phc_ds_hcnt_t );

	wk->YesNoStr[0]    = MSGMAN_AllocString( wk->msg_man, phc_msg_yes );
	wk->YesNoStr[1]    = MSGMAN_AllocString( wk->msg_man, phc_msg_no );


}

//--------------------------------------------------------------------------------------------
/**
 * メニュー項目解放
 *
 * @param	wk		バッグ画面のワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PhcLinkBmp_MenuStrRelease( PHCLINK_WORK * wk )
{
	STRBUF_Delete( wk->SelectStr[ PL_STRING_KESU ]	);
	STRBUF_Delete( wk->SelectStr[ PL_STRING_GO_TANKEN ]	);
	STRBUF_Delete( wk->SelectStr[ PL_STRING_GET_PRESENT ] );
	STRBUF_Delete( wk->SelectStr[ PL_STRING_GET_POKEMON ] );
	STRBUF_Delete( wk->SelectStr[ PL_STRING_OBLIGATE ] );
	STRBUF_Delete( wk->SelectStr[ PL_STRING_FIRST_TANKEN ] );

	STRBUF_Delete( wk->DecideStr );
	STRBUF_Delete( wk->BackStr   );

	STRBUF_Delete( wk->TodayResultStr );
	STRBUF_Delete( wk->SendResultStr );
	STRBUF_Delete( wk->PresentResultStr );
	STRBUF_Delete( wk->PokemonResultStr );
	STRBUF_Delete( wk->ItemResultStr );
	STRBUF_Delete( wk->ResultStr[0]  );
	STRBUF_Delete( wk->ResultStr[1]  );
	STRBUF_Delete( wk->ResultStr[2]  );
	STRBUF_Delete( wk->StillWalkStr  );
	STRBUF_Delete( wk->StillWatStr   );

	STRBUF_Delete( wk->WalkTotalStr  );
	STRBUF_Delete( wk->WatTotalStr   );

	STRBUF_Delete( wk->YesNoStr[0]  );
	STRBUF_Delete( wk->YesNoStr[1]  );
}

//------------------------------------------------------------------
/**
 * @brief   右下の「やめる」文字列描画
 *
 * @param   wk		PHC画面用ワーク
 * @param   bmpno	BMPWINのインデックスNO
 *
 * @retval  none
 */
//------------------------------------------------------------------
void PhcLinkBmp_CancelPrint( PHCLINK_WORK *wk, int bmpno )
{

	PhcLinkBmp_StrPrintColor_M( wk, bmpno, wk->BackStr, FONT_TOUCH, PHCCOL_B_BLACK );

}


//=============================================================================================
/**
 * 文字展開表示カラー版
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	BMPWINのインデックスNO
 * @param   strId	文字列インデックス
 * @param   col		カラー指定
 */
//=============================================================================================
void PhcLinkBmp_StrPrintExpandColor_M( PHCLINK_WORK *wk, int winno, int strId, GF_PRINTCOLOR col )
{
	STRBUF *str = MSGMAN_AllocString( wk->msg_man, strId );
	WORDSET_ExpandStr( wk->wset, wk->TalkStr, str );

//	PhcLinkBmp_StrPrint_M( wk, winno, wk->TalkStr, FONT_SYSTEM );
	PhcLinkBmp_StrPrintColor_M( wk, winno, wk->TalkStr, FONT_SYSTEM, col );
	STRBUF_Delete(str);
}


//==============================================================================
/**
 * @brief   Expandして一発書き
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	BMPWINのインデックスNO
 * @param   str		文字列インデックス
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_StrPrintExpand_M( PHCLINK_WORK *wk, int winno, int strId )
{
//	STRBUF *str = MSGMAN_AllocString( wk->msg_man, strId );
//	WORDSET_ExpandStr( wk->wset, wk->TalkStr, str );

//	PhcLinkBmp_StrPrint_M( wk, winno, wk->TalkStr, FONT_SYSTEM );
//	STRBUF_Delete(str);

	PhcLinkBmp_StrPrintExpandColor_M( wk, winno, strId, PHCCOL_N_WHITE );

}

//==============================================================================
/**
 * @brief   色指定文字列描画
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	BMPWINのNO(phclink_bmp_def.h参照）
 * @param   str		STRBUF
 * @param   font	FONT_????
 * @param   col		色指定
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_StrPrintColor_M( PHCLINK_WORK *wk, int winno, STRBUF *str, int font, GF_PRINTCOLOR col )
{
	GF_BGL_BmpWinDataFill( &wk->MainBmpWin[winno], 0x00 );
	GF_STR_PrintColor(	&wk->MainBmpWin[winno], font,
						str,	0, 0, MSG_ALLPUT, col, NULL );

}


//==============================================================================
/**
 * @brief   メイン画面に文字列描画（一発）
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	ウインドウ指定
 * @param   str		文字列ポインタ
 * @param   font	フォント指定
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_StrPrint_M( PHCLINK_WORK *wk, int winno, STRBUF *str, int font )
{

	PhcLinkBmp_StrPrintColor_M( wk, winno, str, font, PHCCOL_N_WHITE );

}



//==============================================================================
/**
 * @brief   メイン画面に文字列描画（一発）
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	ウインドウ指定
 * @param   str		文字列ポインタ
 * @param   font	フォント指定
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_TitlePrint_M( PHCLINK_WORK *wk, int winno, STRBUF *str, int font )
{

	GF_BGL_BmpWinDataFill( &wk->MainBmpWin[winno], 0x00 );
	GF_STR_PrintColor(	&wk->MainBmpWin[winno], font,
						str,	0, 0, MSG_ALLPUT, PHCCOL_T_BLACK, NULL );
}



//==============================================================================
/**
 * @brief   色指定付き文字列描画
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	ウインドウ指定
 * @param   str		文字列ポインタ
 * @param   font	フォント指定
 * @param   col		カラー指定
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_StrPrintColor_S( PHCLINK_WORK *wk, int winno, STRBUF *str, int font, GF_PRINTCOLOR col )
{
	GF_BGL_BmpWinDataFill( &wk->SubBmpWin[winno], 0x00 );
	GF_STR_PrintColor(	&wk->SubBmpWin[winno], font,
						str,	0, 0, MSG_ALLPUT, col, NULL );

}

//==============================================================================
/**
 * @brief   サブ画面に文字列描画（一発）
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	ウインドウ指定
 * @param   str		文字列ポインタ
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_StrPrint_S( PHCLINK_WORK *wk, int winno, STRBUF *str )
{
	PhcLinkBmp_StrPrintColor_S( wk, winno, str, FONT_SYSTEM, PHCCOL_N_BLACK );
}

//==============================================================================
/**
 * @brief   Expandして一発書き
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	BMPWINインデックスNO
 * @param   str		文字列インデックス
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_StrPrintExpand_S( PHCLINK_WORK *wk, int winno, int strId )
{
	PhcLinkBmp_StrPrintExpandColor_S( wk, winno, strId, PHCCOL_N_BLACK );

}

//=============================================================================================
/**
 * Expandして一発書き（カラー指定版）
 *
 * @param   wk		PHC画面用ワーク
 * @param   winno	BMPWINインデックスNO
 * @param   strId	文字列インデックス
 * @param   col		カラー指定
 */
//=============================================================================================
void PhcLinkBmp_StrPrintExpandColor_S( PHCLINK_WORK *wk, int winno, int strId, GF_PRINTCOLOR col )
{
	STRBUF *str = MSGMAN_AllocString( wk->msg_man, strId );
	WORDSET_ExpandStr( wk->wset, wk->TalkStr, str );

	PhcLinkBmp_StrPrintColor_S( wk, winno, wk->TalkStr, FONT_SYSTEM, col );
	STRBUF_Delete(str);
}




//==============================================================================
/**
 * @brief   会話ウインドウに描画
 *
 * @param   wk		PHC画面ワーク
 * @param   msgno
 *
 * @retval  int
 */
//==============================================================================
//=============================================================================================
/**
 * @brief	会話ウインドウに描画
 *
 * @param   wk		PHC画面ワーク
 * @param   winno	BMPWINインデックスNO
 * @param   msgno	メッセージインデックス
 *
 * @retval  int		メッセージウインドウインデックス
 */
//=============================================================================================
int PhcLinkBmp_TalkWinPrint( PHCLINK_WORK *wk, int winno, int msgno )
{
	int idx;
	STRBUF *str = MSGMAN_AllocString( wk->msg_man, msgno );
	// ウインドウ枠描画
	BmpTalkWinWrite( &wk->MainBmpWin[winno], WINDOW_TRANS_OFF, TALK_WIN_CGX_NUM, TALK_WIN_PAL );

	// BMPWIN内クリア
	GF_BGL_BmpWinDataFill( &wk->MainBmpWin[winno], 0xff );

	WORDSET_ExpandStr( wk->wset, wk->TalkStr, str );
	idx = GF_STR_PrintSimple( &wk->MainBmpWin[winno], FONT_TALK, wk->TalkStr, 0, 0,
								CONFIG_GetMsgPrintSpeed( wk->config ), NULL );
	OS_Printf("msg speed = %d, print speed = %d\n", CONFIG_GetMsgSpeed(wk->config),CONFIG_GetMsgPrintSpeed( wk->config ));

	STRBUF_Delete(str);

	return idx;
}

//==============================================================================
/**
 * @brief   会話ウインドウに描画(一括)
 *
 * @param   wk
 * @param   msgno
 *
 * @retval  int
 */
//==============================================================================
//=============================================================================================
/**
 * @brief	会話ウインドウに描画(一括)
 *
 * @param   wk		PHC画面ワーク
 * @param   winno	BMPWINインデックスNO
 * @param   msgno	メッセージNO
 */
//=============================================================================================
void PhcLinkBmp_TalkWinPrintOnce( PHCLINK_WORK *wk, int winno, int msgno )
{
	STRBUF *str = MSGMAN_AllocString( wk->msg_man, msgno );
	// ウインドウ枠描画
	BmpTalkWinWrite( &wk->MainBmpWin[winno], WINDOW_TRANS_OFF, TALK_WIN_CGX_NUM, TALK_WIN_PAL );

	// BMPWIN内クリア
	GF_BGL_BmpWinDataFill( &wk->MainBmpWin[winno], 0xff );

	WORDSET_ExpandStr( wk->wset, wk->TalkStr, str );
	GF_STR_PrintSimple( &wk->MainBmpWin[winno], FONT_TALK, wk->TalkStr, 0, 0,	MSG_ALLPUT, NULL );

	STRBUF_Delete(str);

}



//==============================================================================
/**
 * @brief   会話ウインドウにセーブ中のアニメアイコンを出す（phc_a.dat限定)
 *
 * @param   wk		PHC画面ワーク
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_TimeWaitIconPut( PHCLINK_WORK *wk )
{
	wk->TimeWaitIconPtr = TimeWaitIconAdd( &wk->MainBmpWin[PL_BMP_B_TALK] , TALK_WIN_CGX_NUM );
}


//==============================================================================
/**
 * @brief   会話ウインドウにセーブ中のアニメアイコンを消す
 *
 * @param   wk		PHC画面ワーク
 *
 * @retval  none
 */
//==============================================================================
void PhcLinkBmp_TimeWaitIconDel( PHCLINK_WORK *wk )
{
   TimeWaitIconDel( wk->TimeWaitIconPtr );
}

